package main.memento;

import cn.hutool.core.bean.BeanUtil;
import main.pojo.Person;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 数据管理者
 */

public class DataManager {

    /**
     * 数据版本管理
     * List: 下标代表版本号
     * Class: 进行备忘录存储的数据类型
     */
    private Map<Class, List<Person>> database;

    public DataManager() {
        database = new HashMap<>();
    }

    public void save(Person data) {
        Person save = new Person();
        BeanUtil.copyProperties(data, save);
        List<Person> list = database.computeIfAbsent(data.getClass(), k -> new ArrayList<>());
        list.add(save);
    }

    public Object get(Person o, int version) {
        List<Person> list = database.get(o.getClass());
        if (list == null || version >= list.size()) {
            return null;
        }
        Object get = list.get(version);
        BeanUtil.copyProperties(get, o);
        return o;
    }

}
